#include <stdio.h>


#define MAXPILHA 100
#define ERROPILHACHEIA -1
#define ERROPILHAVAZIA -2

typedef struct{
int dados[MAXPILHA];
int topo;
}pilha;

void InicializaPilha();
int PilhaCheia();
int PilhaVazia();
int empilha(int dado);
int desempilha();
int topo();

pilha aPilha;

int main(){
int d0;
int op;

printf("Escolha a opção 0,1,2,3,4,5,6:\n");
scanf("%d",&op);
while(op!=6){
 switch(op){
  case 0:
         InicializaPilha();
         break;
 case 1:
        printf("Pilha Cheia: %d\n",PilhaCheia() );
        break;
 case 2:
        printf("Pilha Vazia: %d\n",PilhaVazia() ); 
        break;
 case 3:
         printf("Digite dado a empilhar:\n");
         scanf("%d",&d0);
         printf("empilha = %d\n",empilha(d0));
         printf("Topo = %d\n",aPilha.topo);
         break;
 case 4:
         printf("desempilha = %d\n",desempilha());
         printf("Topo = %d\n",aPilha.topo);
         break;
 case 5:
         printf("Topo: %d\n",topo());
         break;
 case 6:
        break;
 default:
         break;
 }
 printf("Escolha a opção 0,1,2,3,4,5:\n");
 scanf("%d",&op); 
}

/*
InicializaPilha();
printf("Topo = %d\n",aPilha.topo);
printf("Pilha Cheia: %d\n",PilhaCheia() );
printf("Pilha Vazia: %d\n",PilhaVazia() );
d0=4;
printf("empilha = %d\n",empilha(d0));
printf("Topo = %d\n",aPilha.topo);
d0=6;
printf("empilha = %d\n",empilha(d0));
printf("Topo = %d\n",aPilha.topo);

printf("desempilha = %d\n",desempilha());
printf("Topo = %d\n",aPilha.topo);
*/

return 0;
}

void InicializaPilha(){
aPilha.topo = -1;
}

int PilhaCheia(){
 if(aPilha.topo == MAXPILHA-1)
  return 1;
 else
  return 0;
}

int PilhaVazia(){
 if(aPilha.topo == -1)
  return 1;
 else
  return 0;
}

int empilha(int dado){
 if(PilhaCheia())
  return(ERROPILHACHEIA);
 else{
  aPilha.topo=aPilha.topo+1;
  aPilha.dados[aPilha.topo]=dado;
  return aPilha.dados[aPilha.topo];
 }
}
int desempilha(){
 if(PilhaVazia())
  return(ERROPILHAVAZIA);
 else{
  aPilha.topo=aPilha.topo-1;
  return aPilha.dados[aPilha.topo];
 }
}

int topo(){
 if(PilhaVazia()){
  printf("Pilha Vazia!\n");
  return(ERROPILHAVAZIA);
 }
 else{
  return aPilha.dados[aPilha.topo];
 } 
}
